import { Node } from "cc"
import { UIConfig } from "./LayerManager";

export interface UICallbacks{

    /**
     * 节点添加到层级的回调
     * @param node  当前的节点 
     * @param params 传递过来的参数 any类型
     * @returns 
     */
    onAdded?:(node:Node,params:any)=>void

    /**
     * 节点 destroy之后的回调
     * @param  node  当前的节点
     * @param params 
     * @returns void
     */
    onRemoved?:(node:Node | null, params:any) =>void

    /**
     * 指定onBeforeRemove方法，作者要求一定要调用next方法，否则节点不会被删除
     * @param node 当前节点
     * @param next 回调方法
     * @returns 
     */
    onBeforeRemove?:(node:Node,next:Function) =>void

    /**
     * 窗口加载失败回调，如遇到网络异常时
     * @returns void
     */
    onLoadFailure?:()=>void

}

export class ViewParams {
    //界面配置
    config:UIConfig = null!;
    
    //界面传递的参数
    params:any = null!;

    //callback 界面回调函数
    callback:UICallbacks = null!;

    //界面是否在使用状态，默认在使用状态
    valid:boolean = true;

    //界面根节点
    node:Node = null!;

}

 